<?php
/**
 * AB-PHP DI Container
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * @author Patrick J. Mizer
 * @package ab.core
 */
namespace Ab\Core;

class Container
{

    /**
     * @var Dao
     */
    public static $dao;

    /**
     *
     * @param string $testId
     * @return Test
     */
    public static function createTest($testId) {
        $test = new Test($testId, self::$dao);
        return $test;
    }

    /**
     *
     * @param string $label
     * @param Test $test
     * @return TestVariation
     */
    public static function createTestVariation($label, $markup, Test $test) {
        $testVariation = new TestVariation($test, $label, $markup, self::$dao);
        return $testVariation;
    }

    /**
     *
     * @param string $testId
     * @param array $templates
     * @return \Ab\Core\Conversion
     */
    public static function createConversion($testId) {
        $conversion = new Conversion($testId,  self::$dao);
        return $conversion;
    }

    /**
     *
     * @param string $templatePath
     * @param array $data
     * @return TestVariationTemplate 
     */
    public static function createTestVariationTemplate($templatePath,
            $data = array()) {

        $template = new TestVariationTemplate($templatePath, $data);

        return $template;
    }
}
?>
